parser grammar AnalexParser;

options {
  language = Java;
  tokenVocab = AnalexLexer;
}

@header {
  package practica6;
}


@members {
     private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
     public ArrayList<RecognitionException> getErrors() {
        return errors;
     }
     @Override
     public void reportError (RecognitionException e) {
        String msg = getErrorMessage(e, getTokenNames());
        System.err.println(msg);
        errors.add(e);
     }
}

entrada : instrucciones;

instrucciones : (instruccion)*;

instruccion : exp SEPARADOR;

exp : exp_mult ((MAS|MENOS) exp_mult)* ;

exp_mult : exp_base ((MULT|DIV) exp_base)* ;

exp_base : NUMERO | PARENTESIS_A exp PARENTESIS_C ;
